package Modelo;


public class Laser implements Habilidad {

	private Numeros potencia;
	private int vidaUtil;
	
	public Laser(){
		potencia= new Entero(Constantes.potenciaLaser);
		vidaUtil=Constantes.vidaUtilLaser;
	}
	
	/**
	 * El ejecutor dispara el laser
	 * @param ejecutor
	 */
	
	public void ejecutarSobre(PoseedorDeHabilidad ejecutor) {
		// bloque frente
		if(vidaUtil>0){
			Bloque bloqueADestruir = ejecutor.getMapa().getBloqueNEnDireccionDesdeUbicacionDe(ejecutor,ejecutor.getSentido(),1);
			bloqueADestruir.atacar(potencia);
			vidaUtil--;
		}		
		else{
			ejecutor.eliminarHabilidad(this);
		}
	}

	/**
	 * Indica si el ejecutor puede disparar el laser 
	 * @param ejecutor
	 * @return boolean
	 */
	
	public boolean esEjecutableSobre(PoseedorDeHabilidad ejecutor) {
		if(vidaUtil<=0) return false;
		return ejecutor.getMapa().getBloqueNEnDireccionDesdeUbicacionDe(ejecutor,ejecutor.getSentido(),1).esFirme();
	}

	/**
	 * Tiempo que tarda la habilidad en ejecutarse
	 * @param ejecutor
	 * @return long
	 */
	
	public long tiempoDeEjecucion(PoseedorDeHabilidad ejecutor) {
		return Constantes.tiempoCiclo;
	}

}

